/**
 *    title:  tools.h
 *    author:  sleeeeeping
 *    created:  2024-07-11 18:38:50
**/
#ifndef _TOOLS_H__
#define _TOOLS_H__

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <time.h>

#ifdef DEBUG
    #define malloc(arg) myMalloc(arg, __FILE__, __func__, __LINE__)
    #define free(arg) myMalloc(arg, __FILE__, __func__, __LINE__)
#endif

#ifdef DEBUG
    #define debug(...) do { \
        printf("%s %s %u: ", __FILE__, __func__, __LINE__); \
        printf("__VA_ARGS__"); \
    } while (0);
#else 
    #define debug(...) do {} while (0)
#endif 

void *myMalloc(size_t , const char *, const char *, size_t);
void myFree(void *, const char *, const char *, size_t);
int readInput(); // 标准读入选择
void readStr(char *, size_t ); // 标准读入字符串
void readName(char *, size_t ); // 标准读入姓名
float readPrice(); // 标准读入定价
float readMoney(); // 标准读入金额
int readNo(); // 标准读入编号No
char readConfirm(); // 标准输入[y/n]
char readNPQ(); // 标准读入翻页NPQ
int readId(); // 标准读入编号ID
void readSex(char *, size_t ); // 标准读入性别
void readTel(char *, size_t ); // 标准读入联系方式
void readIdentityCard(char *, size_t ); // 标准读入身份证
int readYear(); // 标准读入年份
int readMonth(); // 标准读入月份
time_t readBirth(); // 标准读入生日（返回秒数）
void feedbackView(const char *); // 标准信息打印
int readPassword(char* , int , bool ); // 标准密码读入
int readAuthority(); // 标准读入权限
void anyKeyContinue(); //按任意键继续
bool loadDataFromFile(const char *, void *, size_t ); // 从文件中加载数据
void updateDataToFile(const char *, void *, size_t , size_t ); // 保存数据到文件
bool findFileToPath(const char *, const char *); // 目录中查找文件是否存在


#endif // _TOOLS_H__